﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Salon
{
    /// <summary>
    /// Implementacja kontrolki filtrującej
    /// Precondition - warunki dodatkowe w zapytaniu np. złączenia tabel: cars.color=colors.id itp
    /// ColumnName - nazwa tabeli i kolumny której dotyczy dana kontrolka np. users.name
    /// ColumnValue - pobranie wartości danej kontrolki w zaleźności od jej typu 
    /// IsString - flaga mówiąca o tym czy w zapytaniu trzeba daną wartość obłożyć cudzysłowami
    /// CleanUp - wyczyszczenie wartości
    /// </summary>
    class Filter : IFilter
    {
        public Filter(string columnName, string columnValue, bool isString)
        {
            ColumnName = columnName;
            ColumnValue = columnValue;
            IsString = isString;
        }
        public Filter(string columnName, int columnValue)
        {
            ColumnName = columnName;
            ColumnValue = columnValue.ToString();
            IsString = false;
        }

        /// <summary>
        /// Funkcja konwertuje Filtr na Listę filtrów do przekazania jako parametr.
        /// Zwraca listę filtrów zawierającą jedynie bierzący filtr
        /// </summary>
        public IList<IFilter> asList()
        {
            IList<IFilter> list = new List<IFilter>();
            list.Add(this);
            return list;
        }

        public String ColumnValue { get;set; }

        public String Precondition { get; set; }

        public String ColumnName { get; set; }

        public bool IsString { get; set; }

        public void CleanUp()
        {
            this.ColumnValue = "";
        }
    }
}
